home *** CD-ROM | disk | FTP | other *** search
- class FPUI.TreeDataProvider extends FPUI.DataProvider
- {
- var m_root = null;
- function TreeDataProvider(root)
- {
- super();
- this.setRootNode(root);
- }
- function setRootNode(root)
- {
- var _loc1_ = this;
- _loc1_.m_root = root;
- _loc1_.removeAll();
- if(_loc1_.m_root != null)
- {
- _loc1_.m_root.setIsOpen(true);
- _loc1_.addNodeAt(-1,-1,_loc1_.m_root);
- }
- _loc1_.updateViews();
- }
- function calcWidth()
- {
- return this.doCalcWidth(this.m_root,0);
- }
- function doCalcWidth(node, w)
- {
- var _loc3_ = w;
- if(node.getLastDrawnWidth() > _loc3_)
- {
- _loc3_ = node.getLastDrawnWidth();
- }
- if(node.isOpen())
- {
- var cn = node.getChildNodes();
- var _loc1_ = 0;
- while(_loc1_ < cn.length)
- {
- var _loc2_ = this.doCalcWidth(cn[_loc1_],_loc3_);
- if(_loc2_ > _loc3_)
- {
- _loc3_ = _loc2_;
- }
- _loc1_ = _loc1_ + 1;
- }
- }
- return _loc3_;
- }
- function addNodeAt(n, level, node)
- {
- var _loc2_ = n;
- node.setLevel(level);
- if(_loc2_ >= 0)
- {
- this.addItemAt(_loc2_,node);
- }
- _loc2_ = _loc2_ + 1;
- if(node.isBranch() && node.isOpen())
- {
- level++;
- var _loc3_ = node.getChildNodes();
- var _loc1_ = 0;
- while(_loc1_ < _loc3_.length)
- {
- _loc2_ = this.addNodeAt(_loc2_,level,_loc3_[_loc1_]);
- _loc1_ = _loc1_ + 1;
- }
- }
- return _loc2_;
- }
- function getNthNode(index)
- {
- return this.getItemAt(index);
- }
- function updateBranch(index)
- {
- var _loc2_ = this;
- var node = index != -1 ? _loc2_.getNthNode(index) : _loc2_.m_root;
- if(node.isBranch())
- {
- var _loc3_ = index + 1;
- var level = node.getLevel() + 1;
- var _loc1_ = _loc3_;
- while(_loc1_ < _loc2_.getLength() && _loc2_.getNthNode(_loc1_).getLevel() >= level)
- {
- _loc1_ = _loc1_ + 1;
- }
- _loc2_.removeItemsAt(_loc3_,_loc1_ - _loc3_);
- if(node.isOpen())
- {
- var kids = node.getChildNodes();
- _loc1_ = 0;
- while(_loc1_ < kids.length)
- {
- _loc3_ = _loc2_.addNodeAt(_loc3_,level,kids[_loc1_]);
- _loc1_ = _loc1_ + 1;
- }
- }
- }
- }
- }
-